<template>
  <el-tree
   :data="data"
   node-key="id"
    :props="defaultProps"
     @node-click="handleNodeClick"     
     default-expand-all
     :default-checked-keys="list"
     ref="tree"
     :show-checkbox="showbox" 
    @check="handleCheck"    
     >
     </el-tree>
</template>

<script>
import Axios from 'axios';
  export default {
    //refresh这个参数是刷新获取参数，showbox这个参数是在不同的界面决定是否有勾选框
    props:["refresh","showbox","personid"],
    data() {
      return {      
        list:[],
        data: [],
        defaultProps: {
          id:'id',
          children: 'menus',
          label: 'menuname'
        }
      };
    },
    //监听refresh这个属性，如果父主键修改了它，说明我们子主键就需要刷新从后台重新获取一次菜单信息
    watch:{
    refresh:function(newValue,oldValue){
        console.log("是否进入");
        this.getMenu()
     },    
    //监听父键选中了哪个角色,根据角色查询菜单
    //使用handler和immediate:true,让监听器在第一次赋值的时候也触发
      personid:{
          handler(newValue,oldValue){
            console.log(newValue);
            this.$axios.get("/api/role/findByid/"+newValue).then(res=>{
              console.log("数组是否查询到",res);
              if(res.data.code==200){
                this.$refs.tree.setCheckedKeys([])  
                 
                this.list=res.data.data               
              }
            }).catch()
          },
          immediate:true,
      }

    },
    created(){      
      //创建的时候使用这个方法获取菜单，我们将获取方法提取出去,然后其他地方也可以调用
    this.getMenu()
    },

    methods: {
     
      // 子传父的事件
      handleNodeClick(data) {
        console.log("触发handleNodeClick");
        this.$emit('callfather',data)
      },
      getMenu(){
          this.$axios.get("/api/rbacmenu/getAllmenu").then(res=>{
        console.log(res);
        // 将后端查询到的数据复制给这个data数据上
        this.data=res.data.data
        console.log(this.data);
     }).catch();
      },
      
      handleCheck(node,choise){        
        let arr=choise.checkedKeys
        this.$emit('choiseMethod',arr);
       // console.log(node,choise);
        console.log(arr);

      }




    },
   
  };
</script>